//
//  Settings.hpp
//  WiFiMACSim
//
//  Created by Christopher Kemsley on 4/1/12.
//  Copyright (c) 2012 iAppolopolis. All rights reserved.
//

#ifndef WiFiMACSim_Settings_hpp
#define WiFiMACSim_Settings_hpp

#include "Types.hpp"

SimNamespaceBegin


struct Settings
{
	static Settings&	shared () ;
	
	
	/** Note: all durations are have units of slots **/
	
	UInteger	dataPacketDuration ;	// Data
	UInteger	controlPacketDuration ;	// CTS, RTS, ACK
	
	UInteger	SIFSDuration ;
	UInteger	DIFSDuration ;
	
	UInteger	CW0 ;
	UInteger	CWMax ;
	
	UInteger	lambda ;
	
	
	
	UInteger	simulationDuration ;
	
	
	
	
	/** Random number generators **/
	
	UInteger	poissonSlotCount	( UInteger lambdaScalar = 1 ) ;
	UInteger	uniformBackoff		() ; // [1,CW0]
	
	
	
	
private:
	Settings () ; ~Settings () ;
} ;


SimNamespaceEnd
#endif
